<template>
  <div class="site-wrapper site-page--login">
    <div class="site-content__wrapper">
      <div class="site-content">
        <div class="brand-info">
          <h2 class="brand-info__text">日常任务看板工具</h2>
          <p class="brand-info__intro">
            日常任务看板工具基于vue、element-ui构建开发，实现Go后台管理前端功能。
          </p>
        </div>
        <el-dialog
          title="注册账号"
          :visible.sync="visible"
          :append-to-body="true">
          <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px">
            <el-form-item label="用户名">
              <el-input type="text" v-model="dataForm.username"></el-input>
            </el-form-item>
            <el-form-item label="密码" prop="password">
              <el-input type="password" v-model="dataForm.password"></el-input>
            </el-form-item>
            <el-form-item label="确认密码" prop="confirmPassword">
              <el-input type="password" v-model="dataForm.confirmPassword"></el-input>
            </el-form-item>
            <el-form-item label="手机">
              <el-input type="text" v-model="dataForm.phone"></el-input>
            </el-form-item>
          </el-form>
          <span slot="footer" class="dialog-footer">
            <el-button @click="visible = false">取消</el-button>
            <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
          </span>
        </el-dialog>
      </div>
    </div>
  </div>
  
</template>

<script>
import { clearLoginInfo } from "@/utils";
export default {
  data() {
    var validateConfirmPassword = (rule, value, callback) => {
      if (this.dataForm.password !== value) {
        callback(new Error("两次密码输入不一致"));
      } else {
        callback();
      }
    };
    var validatePassword = (rule, value, callback) => {
      var len = this.dataForm.password.length;
      if ( len < 6 || len > 20) {
        callback(new Error("密码长度限制为6-20位"));
      } else {
        callback();
      }
    };
    return {
      visible: true,
      dataForm: {
        username: "",
        password: "",
        confirmPassword: "",
        phone: ""
      },
      dataRule: {
        password: [
          { required: true, message: "密码不能为空", trigger: "blur" },
          { validator: validatePassword, trigger: "blur"}
        ],
        confirmPassword: [
          { required: true, message: "确认密码不能为空", trigger: "blur" },
          { validator: validateConfirmPassword, trigger: "blur" }
        ],
        phone: [
          { required: true, message: "手机不能为空", trigger: "blur" }
        ]
      }
    };
  },
  computed: {},
  methods: {
    // 初始化
    init() {
      this.visible = true;
      this.$nextTick(() => {
        this.$refs["dataForm"].resetFields();
      });
    },
    // 表单提交
    dataFormSubmit() {
      this.$refs["dataForm"].validate(valid => {
        if (valid) {
          this.$http({
            url: this.$http.adornUrlSys("/admin/users/register"),
            method: "post",
            data: this.$http.adornData({
              user_name: this.dataForm.username,
              pass: this.dataForm.password,
              phone: this.dataForm.phone,
              card_no: ""
            })
          }).then(({ data }) => {
            if (data && data.code === 200) {
              this.$message({
                message: "操作成功",
                type: "success",
                duration: 1500,
                onClose: () => {
                  this.visible = false;
                  this.$nextTick(() => {
                    clearLoginInfo();
                    this.$router.push("/login");
                  });
                }
              });

              // 为新注册用户添加初始存在的几个基础池子
              this.$http({
                // 注意不能用/api /api需要token，未登录的新用户无token
                url: this.$http.adornUrl("/init/initPool"),
                method: "post",
                data: this.$http.adornData({
                  username: this.dataForm.username
                })
              }).then(({ data }) => {
                if (data) {
                  this.$message({
                    message: "初始化池子成功",
                    type: "success",
                    duration: 1500,
                    onClose: () => {
                      this.visible = false;
                    }
                  });
                } else {
                  this.$message.error(data.msg);
                }
              });
            } else {
              this.$message.error(data.msg);
            }
          });
        }
      });
    }
  }
};
</script>

<style>
.site-wrapper.site-page--login {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: rgba(38, 50, 56, 0.6);
  overflow: hidden;
}
.site-wrapper.site-page--login:before {
  position: fixed;
  top: 0;
  left: 0;
  z-index: -1;
  width: 100%;
  height: 100%;
  content: "";
  background-image: url(~@/assets/img/login_bg.jpg);
  background-size: cover;
}
.site-wrapper.site-page--login .site-content__wrapper {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  padding: 0;
  margin: 0;
  overflow-x: hidden;
  overflow-y: auto;
  background-color: transparent;
}
.site-wrapper.site-page--login .site-content {
  min-height: 100%;
  padding: 30px 500px 30px 30px;
}
.site-wrapper.site-page--login .brand-info {
  margin: 220px 100px 0 90px;
  color: #fff;
}
.site-wrapper.site-page--login .brand-info__text {
  margin: 0 0 22px 0;
  font-size: 48px;
  font-weight: 400;
  text-transform: uppercase;
}
.site-wrapper.site-page--login .brand-info__intro {
  margin: 10px 0;
  font-size: 16px;
  line-height: 1.58;
  opacity: 0.6;
}
.site-wrapper.site-page--login .login-main {
  position: absolute;
  top: 0;
  right: 0;
  padding: 150px 60px 180px;
  width: 470px;
  min-height: 100%;
  background-color: #fff;
}
.site-wrapper.site-page--login .login-title {
  font-size: 16px;
}
.site-wrapper.site-page--login .login-captcha {
  overflow: hidden;
}
.site-wrapper.site-page--login .login-captcha > img {
  width: 100%;
  cursor: pointer;
}
.site-wrapper.site-page--login .login-btn-submit {
  width: 100%;
  margin-top: 38px;
}
</style>
